package cn.tedu.api;

import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Locale;

/*本类用于测试String类的常用方法*/
public class TestString2 {
    public static void main(String[] args) {
        char []values={'a','b','c'};
        String s1=new String(values);

        String s2="abc";
        /*String重写了hashCode(),是根据字符串的具体内容生成哈希玛值,而不是根据地址值生成
        * 所以虽然s1与s2的地址值不同,但是他们的哈希玛值一样*/
        System.out.println(s1.equals(s2));//true
        System.out.println(s1.hashCode());//96354
        System.out.println(s2.hashCode());//96354

        /*String也重写了Object中的toString(),打印的是字符串的具体内容*/
        System.out.println(s1);//abc

        System.out.println(s1.length());//查看当前字符串的长度
        System.out.println(s1.toUpperCase());//ABC,将本字符串转为全大写
        System.out.println(s1.toLowerCase());//abc,将本字符串转为全小写
        System.out.println(s1.startsWith("a"));//true,判断本字符串是否以指定元素a开头
        System.out.println(s1.endsWith("a"));//false,判断本字符串是否以指定元素a结尾

        System.out.println(s1.charAt(0));//a,根据下标获取本字符串对应位置上的元素

        String s3="abcbdbba";
        System.out.println(s3.indexOf("b"));//1,返回指定字符第一次出现的下标
        System.out.println(s3.lastIndexOf("b"));//6,返回指定元素最后一次出现的下标

        System.out.println(s2.concat("cxy"));//abccxy,将指定字符串拼接到本字符串的结尾
        System.out.println(s2);//abc
        String s4=s2.concat("aaa");
        System.out.println(s4);//abcaaa

        //返回值类型是String类型的数组,所以需要Arrays.toString()打印
        //以指定字符作为分割符,分割当前字符串
         String s5="afbfcfdfe";
        String[] a = s5.split("f");
        System.out.println(Arrays.toString(a));

        //我们也可以遍历数组,拿到数组中的每一个元素
        for (int i = 0; i < a.length-1; i++) {
            System.out.println(a[i]);
        }

        String s6="    hh hhh       ";//本方法的作用是去除首尾两边的空格
        System.out.println(s6.trim());//hh hhh

        String s7="abcdefgh";
        System.out.println(s7.substring(3));//defgh,从指定下标出开始截取子串[3,结束]
        System.out.println(s7.substring(3,6));//def,从指定下标处开始截取子串[3,6)含头不含尾

        System.out.println(String.valueOf(10));//10
        System.out.println(20+10);//30
        System.out.println("20"+10);//2010
        System.out.println(String.valueOf(80)+10);//8010,将int类型的80转为String类型

        byte[] bs = s7.getBytes();//将指定字符串转为byte[]
        System.out.println(Arrays.toString(bs));

    }
}
